package rpa

// -- https://open.byai.com/document/get_token -- begin
type GetByaiTokenJSONData struct {
	Success   bool              `json:"success"`
	Code      int               `json:"code"`
	Message   string            `json:"message"`
	RequestID interface{}       `json:"requestId"`
	Data      *GetByaiTokenData `json:"data"`
}
type GetByaiTokenData struct {
	AccessToken string `json:"access_token"`
	Scope       string `json:"scope"`
	ExpiresIn   int64  `json:"expires_in"`
}

// -- https://open.byai.com/document/get_token -- end

// -- https://open.byai.com/document/get_229 -- begin
type GetByaiTaskJSONData struct {
	Code      int              `json:"code"`
	Data      *GetByaiTaskData `json:"data"`
	ResultMsg string           `json:"resultMsg"`
}
type GetByaiTaskCallPhones struct {
	PhoneType   int    `json:"phoneType"`
	Phone       string `json:"phone"`
	SceneType   int    `json:"sceneType"`
	UserPhoneID int    `json:"userPhoneId"`
	PhoneName   string `json:"phoneName"`
}
type GetByaiTaskResultDefs struct {
	Values []string `json:"values"`
	Name   string   `json:"name"`
}
type GetByaiTaskTimeRanges struct {
	StartTime string `json:"startTime"`
	EndTime   string `json:"endTime"`
}
type GetByaiTaskWorkingTimeRuleList struct {
	TimeRanges []*GetByaiTaskTimeRanges `json:"timeRanges"`
	Weeks      []int                    `json:"weeks"`
}
type GetByaiTaskData struct {
	JobName              string                            `json:"jobName"`
	ChatRoundStat        []interface{}                     `json:"chatRoundStat"`
	BreakEndTime         string                            `json:"breakEndTime"`
	CallJobStatus        int                               `json:"callJobStatus"`
	CallJobStatusDesc    string                            `json:"callJobStatusDesc"`
	DoneCount            int                               `json:"doneCount"`
	FromUnavailableCount int                               `json:"fromUnavailableCount"`
	CallPhones           []*GetByaiTaskCallPhones          `json:"callPhones"`
	CallJobID            int                               `json:"callJobId"`
	UnavailableCount     int                               `json:"unavailableCount"`
	BreakStartTime       string                            `json:"breakStartTime"`
	ResultDefs           []*GetByaiTaskResultDefs          `json:"resultDefs"`
	RejectedCount        int                               `json:"rejectedCount"`
	Remark               string                            `json:"remark"`
	DurationStat         []interface{}                     `json:"durationStat"`
	TotalCount           int                               `json:"totalCount"`
	WorkingStartTime     string                            `json:"workingStartTime"`
	WorkingEndTime       string                            `json:"workingEndTime"`
	CalledCount          int                               `json:"calledCount"`
	JobType              int                               `json:"jobType"`
	RobotDefName         string                            `json:"robotDefName"`
	StartDate            int64                             `json:"startDate"`
	RobotDefID           int                               `json:"robotDefId"`
	WorkingTimeRuleList  []*GetByaiTaskWorkingTimeRuleList `json:"workingTimeRuleList"`
	SmsType              int                               `json:"smsType"`
	SmsTemplateID        int                               `json:"smsTemplateId"`
	SmsCondition         string                            `json:"smsCondition"`
}

// --- https://open.byai.com/document/get_229 -- end

// https://open.byai.com/document/list_226 -- begin
type GetByAiTaskListJSONData struct {
	Code      int                  `json:"code"`
	Data      *GetByAiTaskListData `json:"data"`
	ResultMsg string               `json:"resultMsg"`
}
type GetByAiTaskListItem struct {
	JobName              string `json:"jobName"`
	CallJobStatus        int    `json:"callJobStatus"`
	CallJobStatusDesc    string `json:"callJobStatusDesc"`
	FromUnavailableCount int    `json:"fromUnavailableCount"`
	DoneCount            int    `json:"doneCount"`
	UnavailableCount     int    `json:"unavailableCount"`
	CallJobID            int    `json:"callJobId"`
	RejectedCount        int    `json:"rejectedCount"`
	Remark               string `json:"remark"`
	TotalCount           int    `json:"totalCount"`
	WorkingStartTime     string `json:"workingStartTime"`
	WorkingEndTime       string `json:"workingEndTime"`
	CalledCount          int    `json:"calledCount"`
	JobType              int    `json:"jobType"`
	StartDate            int64  `json:"startDate"`
}
type GetByAiTaskListData struct {
	Total   int                    `json:"total"`
	Pages   int                    `json:"pages"`
	List    []*GetByAiTaskListItem `json:"list"`
	PageNum int                    `json:"pageNum"`
}

// --- https://open.byai.com/document/list_226 -- end

// -- https://open.byai.com/document/execute_221 -- begin
type ExecuteByAiTaskResponse struct {
	Code      int32  `json:"code"`
	ResultMsg string `json:"resultMsg"`
}

// -- https://open.byai.com/document/execute_221 -- end

// --  https://open.byai.com/document/delete_222 -- begin
type DeleteByAiTaskResponse struct {
	Code      int32  `json:"code"`
	RequestId string `json:"requestId"`
	ResultMsg string `json:"resultMsg"`
}

// --  https://open.byai.com/document/delete_222 -- end

// --- https://open.byai.com/document/import_220 -- begin
type CustomerInfoItem struct {
	Name       string                 `json:"name"`
	Phone      string                 `json:"phone"`
	Properties map[string]interface{} `json:"properties"`
}

// --- https://open.byai.com/document/import_220 --- end

// --- https://open.byai.com/document/create_218 --- begin
type ByAiTask struct {
	// 是否关闭暂时停止功能 默认false不关闭
	BreakStartClose bool `json:"breakStartClose"`
	// 任务名称
	CallJobName string `json:"callJobName"`
	// 任务类型, 1-定时,2-手动；当选择定时任务时，startDate为必传
	CallJobType int32 `json:"callJobType"`
	// 公司Id
	CompanyId int64 `json:"companyId"`
	// 并发数，不能大于ai坐席数的2倍
	ConcurrencyNum int32 `json:"concurrencyNum"`
	// ai坐席数,默认1,一个坐席对应一个机器人
	ConcurrencyQuota int32 `json:"concurrencyQuota"`
	// 闪信模板Id
	FlashSmsTemplateId int32 `json:"flashSmsTemplateId"`
	// A、B类意向客户默认分配规则是否开启为流入公海(灰度功能)
	LevelAssignTypeEnabled bool `json:"levelAssignTypeEnabled"`
	// 创建人手机号
	Mobile string `json:"mobile"`
	// 是否开启弹性任务，默认false。仅针对专业版、集团版账号，且指定的外呼线路类型是固话或无主叫的任务，才会生效。
	OpenElasticity bool `json:"openElasticity"`
	// 号码是否支持重复导入 不支持-false
	PermitRepeatNum bool `json:"permitRepeatNum"`
	// 任务优先级，只有开启了任务优先级灰度功能后，该参数才有效
	Priority int32 `json:"priority"`
	// 备注
	Remark string `json:"remark"`
	// 是否开启重拨 默认false 关闭
	RepeatCall bool `json:"repeatCall"`
	// 重拨详细规则；其中phoneStatus中状态 3主叫号码不可用（即外呼失败
	RepeatCallRule []*ByAiTaskRepeatCallRule `json:"repeatCallRule"`
	// 重播中未呼叫号码优先 开关 0 - 关闭（默认） 1 - 打开
	RepeatNoCallPriority int32 `json:"repeatNoCallPriority"`
	// 任务自动暂停，是否释放ai坐席
	RestoreAi bool `json:"restoreAi"`
	// 话术id
	RobotDefId int `json:"robotDefId"`
	// 发送短信的意向等级，固定值：A级(有明确意向)、B级(可能有意向)、C级(明确拒绝)、D级(用户忙)、E级(拨打失败)、F级(无效客户)
	SmsSendLevel []string `json:"smsSendLevel"`
	// 短信模版id
	SmsTemplateId int32 `json:"smsTemplateId"`
	// 是否发送挂机短信：0-否，1-是
	SmsType int32 `json:"smsType"`
	// 任务开始日期（定时任务必填）格式2019-08-08 精确到天
	StartDate string `json:"startDate"`
	// 是否开启天盾策略
	TiandunEnabled bool `json:"tiandunEnabled"`
	// 天盾策略组id
	TiandunRuleStrategyGroupId int32 `json:"tiandunRuleStrategyGroupId"`
	// 线路Id 线路和固话只能传一个[1345]，手机号可以传多个 格式[746,831]
	UserPhoneIds []int32 `json:"userPhoneIds"`
	// 是否推送微信消息给分配到客户的成员
	WechatPush bool `json:"wechatPush"`
	// 自定义多时段，例如：[{"timeRanges":[{"startTime":"09:00","endTime":"20:00"}],"weeks":[1,2]}]
	WorkingTimeRuleList []*ByAiTaskWorkingTimeRuleItem `json:"workingTimeRuleList"`
}

type ByAiTaskRepeatCallRule struct {
	// 间隔时间(0-120min)
	Interval int32 `json:"interval"`
	// 通话状态(2无法接通 3主叫号码不可用 5关机 6占线 7停机 9主叫欠费 10呼损)
	PhoneStatus int32 `json:"phoneStatus"`
	// 重拨次数(1-5)
	Times int32 `json:"times"`
}

type ByAiTaskWorkingTimeRuleItem struct {
	// 时间段列表
	TimeRanges []*ByAiTaskTimeRanges `json:"timeRanges"`
	// 一个星期几周
	Weeks []int64
}

type ByAiTaskTimeRanges struct {
	// 开始时间
	StartTime string `json:"startTime"`
	// 结束时间
	EndTime string `json:"endTime"`
}

type ByAiTaskResponse struct {
	Code int `json:"code"`
	Data struct {
		CallJobID int64 `json:"callJobId"`
	} `json:"data"`
	RequestID string `json:"requestId"`
	ResultMsg string `json:"resultMsg"`
}

// --- https://open.byai.com/document/create_218 --- end
